package my274;

/**
 * 添加一个新的数组来存储H数组的调用次数
 */
public class SuanFa274Dmeo02 {
    public int hIndex(int[] citations) {
        int n = citations.length, count = 0;
        int[] citations2 = new int[n + 1];
        //{3,0,6,1,5}
        for (int i = 0; i < n; i++) {
            //当本次论文的调用次数超出论文的个数时，将超出的部分放到新数组的最后一个元素
            //潜在的原因是因为H指数不会超过论文的个数。本例子中不管一篇论文调用了几次，最后H的最大值以旧是5
            if (citations[i] >= n) {
                citations2[n]++;
            } else {
                //
                citations2[citations[i]]++;
            }
        }
        for (int i = n; i >= 0; i--) {
            //
            count += citations2[i];
            if (count >= i) {
                return i;
            }
        }
        return 0;
    }


    public static void main(String[] args) {
        SuanFa274Dmeo02 suanFa274 = new SuanFa274Dmeo02();
        int[] citations = {3,0,6,1,5};
        int i = suanFa274.hIndex(citations);
        System.out.println(i);
    }

}
